<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>embedme: src/Tracer.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">embedme
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">Tracer.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>实现调试打印  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_base_type_8h_source.html">BaseType.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_singleton_8h_source.html">Singleton.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_thread_8h_source.html">Thread.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_thread_util_8h_source.html">ThreadUtil.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_file_util_8h_source.html">FileUtil.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_date_time_8h_source.html">DateTime.h</a>&quot;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;errno.h&gt;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &lt;stdarg.h&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;typeinfo&gt;</code><br />
<code>#include &lt;thread&gt;</code><br />
</div>
<p><a href="_tracer_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibemb_1_1_tracer.html">libemb::Tracer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">调试跟踪类  <a href="classlibemb_1_1_tracer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibemb_1_1_tracer_sink.html">libemb::TracerSink</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibemb_1_1_s_t_d_sink.html">libemb::STDSink</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a4e8ff43dc540c5a93511924158326fd8"><td class="memItemLeft" align="right" valign="top"><a id="a4e8ff43dc540c5a93511924158326fd8"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>USE_ROS_LOG</b>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a4e8ff43dc540c5a93511924158326fd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51d2ec7e26c90e52a0967b79c0d620fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a51d2ec7e26c90e52a0967b79c0d620fc">BUILD_REL_VERSION</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a51d2ec7e26c90e52a0967b79c0d620fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0ba6d6174a3d816380708025ce5cb22"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#ad0ba6d6174a3d816380708025ce5cb22">TRACE_LEVEL_DBG</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ad0ba6d6174a3d816380708025ce5cb22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81abf4adef27ca1ee16f0568778f958e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a81abf4adef27ca1ee16f0568778f958e">TRACE_LEVEL_WARN</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a81abf4adef27ca1ee16f0568778f958e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83ec0b2eb9e3c1d45f735972da193e0d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a83ec0b2eb9e3c1d45f735972da193e0d">TRACE_LEVEL_ERR</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:a83ec0b2eb9e3c1d45f735972da193e0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a805a48ca8324f35a46f5251265d7d668"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a805a48ca8324f35a46f5251265d7d668">TRACE_LEVEL_INFO</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:a805a48ca8324f35a46f5251265d7d668"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ae6544d3231e9806916a5244cad930d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a3ae6544d3231e9806916a5244cad930d">TRACE_LEVEL_REL</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:a3ae6544d3231e9806916a5244cad930d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11c98794bcb78ef756dddb18233c6f96"><td class="memItemLeft" align="right" valign="top"><a id="a11c98794bcb78ef756dddb18233c6f96"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PRINTF</b>(fmt, ...)&#160;&#160;&#160;do{printf(fmt,##__VA_ARGS__);}while(0)</td></tr>
<tr class="separator:a11c98794bcb78ef756dddb18233c6f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad655afa20229fcc8673cfe91c9742f64"><td class="memItemLeft" align="right" valign="top"><a id="ad655afa20229fcc8673cfe91c9742f64"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>ERRSTR</b>&#160;&#160;&#160;(strerror(errno))</td></tr>
<tr class="separator:ad655afa20229fcc8673cfe91c9742f64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cf3678da7e574c1df0dc0513f8c4da0"><td class="memItemLeft" align="right" valign="top"><a id="a6cf3678da7e574c1df0dc0513f8c4da0"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>ERRMSG</b>(err)&#160;&#160;&#160;(strerror(err))</td></tr>
<tr class="separator:a6cf3678da7e574c1df0dc0513f8c4da0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57d436bf1128d40057fd88def0d0db16"><td class="memItemLeft" align="right" valign="top"><a id="a57d436bf1128d40057fd88def0d0db16"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_D</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#ad0ba6d6174a3d816380708025ce5cb22">TRACE_LEVEL_DBG</a>,&quot;&lt;D&gt;&quot; fmt,##arg);}while(0)</td></tr>
<tr class="separator:a57d436bf1128d40057fd88def0d0db16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72186bbe62551c93227ab18f68d14e63"><td class="memItemLeft" align="right" valign="top"><a id="a72186bbe62551c93227ab18f68d14e63"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_E</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a83ec0b2eb9e3c1d45f735972da193e0d">TRACE_LEVEL_ERR</a>,&quot;&lt;E&gt;&quot; fmt,##arg);}while(0)</td></tr>
<tr class="separator:a72186bbe62551c93227ab18f68d14e63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9447e2b81787347f956430be49d4a48"><td class="memItemLeft" align="right" valign="top"><a id="aa9447e2b81787347f956430be49d4a48"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_W</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a81abf4adef27ca1ee16f0568778f958e">TRACE_LEVEL_WARN</a>,&quot;&lt;W&gt;&quot; fmt,##arg);}while(0)</td></tr>
<tr class="separator:aa9447e2b81787347f956430be49d4a48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36c4d49ee46220e29b6e2d45cba8a8cb"><td class="memItemLeft" align="right" valign="top"><a id="a36c4d49ee46220e29b6e2d45cba8a8cb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_I</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a805a48ca8324f35a46f5251265d7d668">TRACE_LEVEL_INFO</a>,&quot;&lt;I&gt;&quot; fmt,##arg);}while(0)</td></tr>
<tr class="separator:a36c4d49ee46220e29b6e2d45cba8a8cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f70450b396b151c3d3c4c1719e2782f"><td class="memItemLeft" align="right" valign="top"><a id="a5f70450b396b151c3d3c4c1719e2782f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_R</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a3ae6544d3231e9806916a5244cad930d">TRACE_LEVEL_REL</a>,&quot;&lt;R&gt;&quot; fmt,##arg);}while(0)</td></tr>
<tr class="separator:a5f70450b396b151c3d3c4c1719e2782f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a015085b0f01553c204b31849f90fee12"><td class="memItemLeft" align="right" valign="top"><a id="a015085b0f01553c204b31849f90fee12"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_L</b>(uid,  fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(uid,&quot;&lt;L%d&gt;&quot; fmt,uid,##arg);}while(0)</td></tr>
<tr class="separator:a015085b0f01553c204b31849f90fee12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0d6fc54b462f9f5cd8eec719e77d0af"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#ab0d6fc54b462f9f5cd8eec719e77d0af">TRACE_DBG</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_D(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:ab0d6fc54b462f9f5cd8eec719e77d0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0866d85379e242af8423181e5beb225f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a0866d85379e242af8423181e5beb225f">TRACE_WARN</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_W(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:a0866d85379e242af8423181e5beb225f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45055f73487be7356876c9e15530e516"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a45055f73487be7356876c9e15530e516">TRACE_ERR</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_E(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:a45055f73487be7356876c9e15530e516"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a894c4e78e719b0b60aa19c71df0f3f97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a894c4e78e719b0b60aa19c71df0f3f97">TRACE_INFO</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_I(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:a894c4e78e719b0b60aa19c71df0f3f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af50a5804898f1415b45b75b681f5652c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#af50a5804898f1415b45b75b681f5652c">TRACE_REL</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_R(&quot;%s:&quot; fmt,__FUNCTION__,##arg);}</td></tr>
<tr class="separator:af50a5804898f1415b45b75b681f5652c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5259997c34dac23d42ad189c97d9d26d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a5259997c34dac23d42ad189c97d9d26d">TRACE_LOG</a>(uid,  fmt,  arg...)&#160;&#160;&#160;{TRACE_L(uid,&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:a5259997c34dac23d42ad189c97d9d26d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52b8a6819e806d0eb624345244a5d965"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a52b8a6819e806d0eb624345244a5d965">TRACE_DBG_CLASS</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_D(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:a52b8a6819e806d0eb624345244a5d965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a024d38ac4da813c9bef2afd222478377"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a024d38ac4da813c9bef2afd222478377">TRACE_WARN_CLASS</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_W(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:a024d38ac4da813c9bef2afd222478377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc210794b4b204fc34850d740983fe60"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#afc210794b4b204fc34850d740983fe60">TRACE_ERR_CLASS</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_E(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:afc210794b4b204fc34850d740983fe60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec4d1990b387643d1b162ae8c4b4f2d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#aec4d1990b387643d1b162ae8c4b4f2d1">TRACE_INFO_CLASS</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_I(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:aec4d1990b387643d1b162ae8c4b4f2d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59e2b8237c376767dde38a037b7ae92e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a59e2b8237c376767dde38a037b7ae92e">TRACE_REL_CLASS</a>(fmt,  arg...)&#160;&#160;&#160;{TRACE_R(&quot;%s::%s:&quot; fmt,this-&gt;className(),__FUNCTION__,##arg);}</td></tr>
<tr class="separator:a59e2b8237c376767dde38a037b7ae92e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a061c67f2e2661fe27d3deb3916b19939"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_tracer_8h.html#a061c67f2e2661fe27d3deb3916b19939">TRACE_LOG_CLASS</a>(uid,  fmt,  arg...)&#160;&#160;&#160;{TRACE_L(uid,&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td></tr>
<tr class="separator:a061c67f2e2661fe27d3deb3916b19939"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73aff6fd36335695f8fa94c634f113e3"><td class="memItemLeft" align="right" valign="top"><a id="a73aff6fd36335695f8fa94c634f113e3"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_IF</b>(condition)&#160;&#160;&#160;do{if((condition)){TRACE_RED(&quot;if(%s)&lt;@%s,L%d&gt;&quot;,#condition,__FUNCTION__,__LINE__);};}while(0)</td></tr>
<tr class="separator:a73aff6fd36335695f8fa94c634f113e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adec7539b7246abcbd7146660d5f24454"><td class="memItemLeft" align="right" valign="top"><a id="adec7539b7246abcbd7146660d5f24454"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_IF_CLASS</b>(condition)&#160;&#160;&#160;do{if((condition)){TRACE_RED(&quot;if(%s)&lt;@%s::%s,L%d&gt;&quot;,#condition,this-&gt;className(),__FUNCTION__,__LINE__);};}while(0)</td></tr>
<tr class="separator:adec7539b7246abcbd7146660d5f24454"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75813f0eedfca3bdeb2f3299e03cc2e1"><td class="memItemLeft" align="right" valign="top"><a id="a75813f0eedfca3bdeb2f3299e03cc2e1"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_NONE</b>(fmt,  arg...)</td></tr>
<tr class="separator:a75813f0eedfca3bdeb2f3299e03cc2e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23c499166f6536549d930fc423689fee"><td class="memItemLeft" align="right" valign="top"><a id="a23c499166f6536549d930fc423689fee"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_ASSERT</b>(condition)&#160;&#160;&#160;(if(!(condition)){<a class="el" href="_tracer_8h.html#a45055f73487be7356876c9e15530e516">TRACE_ERR</a>(&quot;Assert !!!&quot;);while(1){<a class="el" href="classlibemb_1_1_thread.html#a05f5a8b508ca2ce08c66dd11e2734b82">libemb::Thread::msleep</a>(100);}})</td></tr>
<tr class="separator:a23c499166f6536549d930fc423689fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5422f14baad99dde95961762e2d6fe84"><td class="memItemLeft" align="right" valign="top"><a id="a5422f14baad99dde95961762e2d6fe84"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_RED</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a3ae6544d3231e9806916a5244cad930d">TRACE_LEVEL_REL</a>,&quot;&lt;R&gt;\033[31m\033[1m&quot; fmt &quot;\033[0m&quot;,##arg);}while(0)</td></tr>
<tr class="separator:a5422f14baad99dde95961762e2d6fe84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ef1c2463df9f451fa4fa23965b285da"><td class="memItemLeft" align="right" valign="top"><a id="a3ef1c2463df9f451fa4fa23965b285da"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_GREEN</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a3ae6544d3231e9806916a5244cad930d">TRACE_LEVEL_REL</a>,&quot;&lt;R&gt;\033[32m\033[1m&quot; fmt &quot;\033[0m&quot;,##arg);}while(0)</td></tr>
<tr class="separator:a3ef1c2463df9f451fa4fa23965b285da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97ad4abd28373c1afb4d40bddd21e69a"><td class="memItemLeft" align="right" valign="top"><a id="a97ad4abd28373c1afb4d40bddd21e69a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_YELLOW</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a3ae6544d3231e9806916a5244cad930d">TRACE_LEVEL_REL</a>,&quot;&lt;R&gt;\033[33m\033[1m&quot; fmt &quot;\033[0m&quot;,##arg);}while(0)</td></tr>
<tr class="separator:a97ad4abd28373c1afb4d40bddd21e69a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad853a72aab6617f0e304afade3443c4a"><td class="memItemLeft" align="right" valign="top"><a id="ad853a72aab6617f0e304afade3443c4a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_PINK</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a3ae6544d3231e9806916a5244cad930d">TRACE_LEVEL_REL</a>,&quot;&lt;R&gt;\033[35m\033[1m&quot; fmt &quot;\033[0m&quot;,##arg);}while(0)</td></tr>
<tr class="separator:ad853a72aab6617f0e304afade3443c4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f24ee4604980fb3cf4949241b57b460"><td class="memItemLeft" align="right" valign="top"><a id="a8f24ee4604980fb3cf4949241b57b460"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRACE_CYAN</b>(fmt,  arg...)&#160;&#160;&#160;do{libemb::Tracer::getInstance().print(<a class="el" href="_tracer_8h.html#a3ae6544d3231e9806916a5244cad930d">TRACE_LEVEL_REL</a>,&quot;&lt;R&gt;\033[36m\033[1m&quot; fmt &quot;\033[0m&quot;,##arg);}while(0)</td></tr>
<tr class="separator:a8f24ee4604980fb3cf4949241b57b460"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>实现调试打印 </p>
<p><br  />
 </p><dl class="section note"><dt>Note</dt><dd>打印等级高于当前等级的都能打印出来,如当前级别为1,则DBG(0)等级的信息不会被打印出来,大于等于当前等级的信息都能打印出来.默认为INFO(1)等级. </dd></dl>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a51d2ec7e26c90e52a0967b79c0d620fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51d2ec7e26c90e52a0967b79c0d620fc">&#9670;&nbsp;</a></span>BUILD_REL_VERSION</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BUILD_REL_VERSION&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>打开后只打印ERR和REL级别的打印 </p>

</div>
</div>
<a id="ab0d6fc54b462f9f5cd8eec719e77d0af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0d6fc54b462f9f5cd8eec719e77d0af">&#9670;&nbsp;</a></span>TRACE_DBG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_DBG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_D(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>调试信息打印 </p>

</div>
</div>
<a id="a52b8a6819e806d0eb624345244a5d965"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52b8a6819e806d0eb624345244a5d965">&#9670;&nbsp;</a></span>TRACE_DBG_CLASS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_DBG_CLASS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_D(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>调试信息打印(带类名) </p>

</div>
</div>
<a id="a45055f73487be7356876c9e15530e516"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45055f73487be7356876c9e15530e516">&#9670;&nbsp;</a></span>TRACE_ERR</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_ERR</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_E(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>错误信息打印 </p>

</div>
</div>
<a id="afc210794b4b204fc34850d740983fe60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc210794b4b204fc34850d740983fe60">&#9670;&nbsp;</a></span>TRACE_ERR_CLASS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_ERR_CLASS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_E(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>错误信息打印(带类名) </p>

</div>
</div>
<a id="a894c4e78e719b0b60aa19c71df0f3f97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a894c4e78e719b0b60aa19c71df0f3f97">&#9670;&nbsp;</a></span>TRACE_INFO</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_INFO</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_I(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>提示信息打印 </p>

</div>
</div>
<a id="aec4d1990b387643d1b162ae8c4b4f2d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec4d1990b387643d1b162ae8c4b4f2d1">&#9670;&nbsp;</a></span>TRACE_INFO_CLASS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_INFO_CLASS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_I(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>提示信息打印(带类名) </p>

</div>
</div>
<a id="ad0ba6d6174a3d816380708025ce5cb22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0ba6d6174a3d816380708025ce5cb22">&#9670;&nbsp;</a></span>TRACE_LEVEL_DBG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_LEVEL_DBG&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>用于调试信息的打印 </p>

</div>
</div>
<a id="a83ec0b2eb9e3c1d45f735972da193e0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83ec0b2eb9e3c1d45f735972da193e0d">&#9670;&nbsp;</a></span>TRACE_LEVEL_ERR</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_LEVEL_ERR&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>用于错误信息的打印 </p>

</div>
</div>
<a id="a805a48ca8324f35a46f5251265d7d668"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a805a48ca8324f35a46f5251265d7d668">&#9670;&nbsp;</a></span>TRACE_LEVEL_INFO</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_LEVEL_INFO&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>用于提示信息的打印 </p>

</div>
</div>
<a id="a3ae6544d3231e9806916a5244cad930d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ae6544d3231e9806916a5244cad930d">&#9670;&nbsp;</a></span>TRACE_LEVEL_REL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_LEVEL_REL&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>用于普通信息的打印 </p>

</div>
</div>
<a id="a81abf4adef27ca1ee16f0568778f958e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81abf4adef27ca1ee16f0568778f958e">&#9670;&nbsp;</a></span>TRACE_LEVEL_WARN</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_LEVEL_WARN&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>用于警告信息打印 </p>

</div>
</div>
<a id="a5259997c34dac23d42ad189c97d9d26d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5259997c34dac23d42ad189c97d9d26d">&#9670;&nbsp;</a></span>TRACE_LOG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_LOG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">uid, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_L(uid,&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>日志信息打印(uid必须大于TRACE_LEVEL_REL) </p>

</div>
</div>
<a id="a061c67f2e2661fe27d3deb3916b19939"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a061c67f2e2661fe27d3deb3916b19939">&#9670;&nbsp;</a></span>TRACE_LOG_CLASS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_LOG_CLASS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">uid, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_L(uid,&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>&lt;日志信息打印(带类名,uid必须大于TRACE_LEVEL_REL) </p>

</div>
</div>
<a id="af50a5804898f1415b45b75b681f5652c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af50a5804898f1415b45b75b681f5652c">&#9670;&nbsp;</a></span>TRACE_REL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_REL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_R(&quot;%s:&quot; fmt,__FUNCTION__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>普通信息打印 </p>

</div>
</div>
<a id="a59e2b8237c376767dde38a037b7ae92e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59e2b8237c376767dde38a037b7ae92e">&#9670;&nbsp;</a></span>TRACE_REL_CLASS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_REL_CLASS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_R(&quot;%s::%s:&quot; fmt,this-&gt;className(),__FUNCTION__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>普通信息打印(带类名) </p>

</div>
</div>
<a id="a0866d85379e242af8423181e5beb225f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0866d85379e242af8423181e5beb225f">&#9670;&nbsp;</a></span>TRACE_WARN</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_WARN</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_W(&quot;%s,L%d:&quot; fmt,__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>警告信息打印 </p>

</div>
</div>
<a id="a024d38ac4da813c9bef2afd222478377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a024d38ac4da813c9bef2afd222478377">&#9670;&nbsp;</a></span>TRACE_WARN_CLASS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRACE_WARN_CLASS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arg...&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{TRACE_W(&quot;%s::%s,L%d:&quot; fmt,this-&gt;className(),__FUNCTION__,__LINE__,##arg);}</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>警告信息打印(带类名) </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
